[AWS] ELB(부하 분산)


배경

  • VPC 내 단일 서버를 통한 서비스를 구성하면 단일 서버가 장애 시 서비스를 받을 수 없음
  • 지속적인 서비스 제공을 위해 서버를 다중화 구성하여 서비스의 연속성을 보장하는 고가용성 구성이 필요

ELB - 로드밸런서

  • 다중 서버를 구성(EC2 인스턴스)하면 부하 분산을 할 수 있지만, 서비스 타깃을 사용자 입장에서 일일이 지정해야 하는 문제가 발생합니다. 이를 해결하기 위해 로드밸런서가 존재합니다.

    1. 로드밸런서는 서버의 상태를 파악하고,
    2. 데이터를 분사하여 전달하는 접점 역할을 수행합니다.

리스너

  • 리스너는 프로토콜 및 포트를 사용하여 연결 요청을 확인하는 프로세스입니다.
  • 서비스하고자 하는 프로토콜과 포트를 지정하는 규칙(Rule)을 생성

대상그룹

  • 하나 이상의 대상을 라우팅하여 부하 분산을 하는데 사용합니다.
  • 대상 그룹에(Target Group) 속한 대상에 대해 주기적으로 확인하는 프로세스(Keepalive)를 통해 상태 확인(Health Check)을 수행합니다. 그리고 정상적인 상태의 대상에게만 데이터를 전달합니다.

ELB의 종류

ALB(Application Load Balancer)

  • HTTP나 HTTPS와 같이 웹 애플리케이션에 대한 분산 처리를 제공하는 로드밸런서
  • OSI 7계층에 특화되어 유연하게 관리, 그 외 프로토콜은 NBL 사용 권장

NLB(Network Load Balancer)

  • TCP나 UDP 프로토콜에 대한 포트 정보를 정의하여 네트워크 기반의 분산 처리를 제공하는 로드밸런서

CLB(Classic Load Balancer)

  • VPC의 예전 버전인 EC2-Classic에 대해서도 분산 처리를 제공할 수 있는 이전 세대의 로드밸런서

일반적인 VPC 환경에서는 ALB나 NLB를 사용하는 것이 적합

ALB vs NLB

ALB

  • 다른 로드밸런서에 비해 처리 속도가 조금 느릴 수 있으나 HTTP(S)에 대해 세부적이고 다양한 정책으로 라우팅 할 수 있음
  • URL 경로 기반 라우팅, 호스트 기반 라우팅, HTTP 헤더 기반 라우팅 등과 같이 다양한 규칙을 생성하여 포워드(Forward), 리다이렉션(Re-direction), 지정 HTTP 응답등의 작업 수행 가능
  • ALB는 Lambda 함수를 호출하여 HTTP(S) 요청을 처리할 수 있음

NLB

  • TCP, UDP, TLS 프로토콜에 대하여 로드밸런싱을 수행할 수 있는 OSI 4계층 레벨의 로드밸런서
  • 고정 IP나 탄력적 IP를 보유할 수 있음
  • VPC 엔드포인트 서비스로 연결하여 프라이빗 링크 구성할 수 있음

ELB 통신 방식

  • 인터넷 연결(Internet Facing Load Balancer)

    • 인터넷을 통한 요청을 로드밸런서에 등록된 EC2 인스턴스로 라우팅
  • 내부(Internal Load Balancer)

    • 프라이빗 주소만 가지고 있어, 로드밸런서를 위한 VPC 내부에 액세스하여 등록된 EC2 인스턴스 등 컴퓨팅 자원으로 라우팅

ELB 특징

고가용성

  • 트래픽을 다수의 대상으로 분산하여 고가용성을 유지

상태 확인

  • 대상 그룹에 대한 Keepalive를 통해 주기적으로 상태를 확인

보안기능

  • 보안 그룹을 적용하여 보안 옵션을 부여할 수 있음(단, NLB는 보안 그룹이 적용 되지 않음)

4계층/7계층 로드밸런싱

  • HTTP/HTTPS의 7계층의 애플리케이션을 로드밸런싱하거나 TCP/UDP의 4계층을 로드밸런싱할 수 있음

운영 모니터링

  • ELB 애플리케이션 성능을 실시간으로 모니터링할 수 있음

Hello, I'm@nickhealthy
개발자를 꿈꾸고, 파이썬과 클라우드에 관심이 많은 비전공자

Github